package com.seanliao.nav.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.seanliao.nav.common.domain.dto.PermissionDTO;
import com.seanliao.nav.common.domain.vo.PermissionVO;
import com.seanliao.nav.entity.SysPermission;

import java.util.List;

/**
 * <p>
 * 权限表 服务类
 * </p>
 *
 * @author Sean_Liao
 * @since 2024-01-23
 */
public interface ISysPermissionService extends IService<SysPermission> {

    /**
     * 根据角色id列表获取权限列表，不分类型
     *
     * @param roleIds
     * @return
     */
    List<SysPermission> listPermissionByRoleIds(List<Long> roleIds);

    /**
     * 获取当前用户目录权限树
     */
    List<PermissionVO> selectMenuForCurrentUser();

    /**
     * 获取指定角色权限列表
     */
    List<PermissionVO> selectByRoleId(Long roleId);

    /**
     * 获取所有目录与菜单
     */
    List<PermissionVO> selectMenu();

    /**
     * 获取菜单下权限
     */
    List<PermissionVO> selectPermission(Long id);

    /**
     * 添加权限
     */
    void add(PermissionDTO permissionDTO);

    /**
     * 编辑权限
     */
    void edit(PermissionDTO permissionDTO);

    /**
     * 删除权限
     */
    void remove(Long permissionId);

    /**
     * 根据角色分配权限
     */
    void editRolePermission(Long roleId, List<Long> permissionIds);

    /**
     * 根据权限分配权限
     */
    void editPermissionRole(Long permissionId, List<Long> roleIds);

    /**
     * 排序
     */
    void sort(List<PermissionDTO> permissionDTOList);

}
